home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / net / URLEncoder.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  2.2 KB  |  125 lines

  1. package java.net;
  2.  
  3. import java.io.CharArrayWriter;
  4. import java.io.UnsupportedEncodingException;
  5. import java.nio.charset.Charset;
  6. import java.nio.charset.IllegalCharsetNameException;
  7. import java.nio.charset.UnsupportedCharsetException;
  8. import java.security.AccessController;
  9. import java.util.BitSet;
  10. import sun.security.action.GetPropertyAction;
  11.  
  12. public class URLEncoder {
  13.    static BitSet dontNeedEncoding = new BitSet(256);
  14.    static final int caseDiff = 32;
  15.    static String dfltEncName = null;
  16.  
  17.    private URLEncoder() {
  18.    }
  19.  
  20.    /** @deprecated */
  21.    @Deprecated
  22.    public static String encode(String var0) {
  23.       String var1 = null;
  24.  
  25.       try {
  26.          var1 = encode(var0, dfltEncName);
  27.       } catch (UnsupportedEncodingException var3) {
  28.       }
  29.  
  30.       return var1;
  31.    }
  32.  
  33.    public static String encode(String var0, String var1) throws UnsupportedEncodingException {
  34.       boolean var2 = false;
  35.       StringBuffer var3 = new StringBuffer(var0.length());
  36.       CharArrayWriter var5 = new CharArrayWriter();
  37.       if (var1 == null) {
  38.          throw new NullPointerException("charsetName");
  39.       } else {
  40.          Charset var4;
  41.          try {
  42.             var4 = Charset.forName(var1);
  43.          } catch (IllegalCharsetNameException var12) {
  44.             throw new UnsupportedEncodingException(var1);
  45.          } catch (UnsupportedCharsetException var13) {
  46.             throw new UnsupportedEncodingException(var1);
  47.          }
  48.  
  49.          int var6 = 0;
  50.  
  51.          while(var6 < var0.length()) {
  52.             char var7 = var0.charAt(var6);
  53.             if (dontNeedEncoding.get(var7)) {
  54.                if (var7 == ' ') {
  55.                   var7 = '+';
  56.                   var2 = true;
  57.                }
  58.  
  59.                var3.append((char)var7);
  60.                ++var6;
  61.             } else {
  62.                do {
  63.                   var5.write(var7);
  64.                   if (var7 >= '\ud800' && var7 <= '\udbff' && var6 + 1 < var0.length()) {
  65.                      char var8 = var0.charAt(var6 + 1);
  66.                      if (var8 >= '\udc00' && var8 <= '\udfff') {
  67.                         var5.write(var8);
  68.                         ++var6;
  69.                      }
  70.                   }
  71.  
  72.                   ++var6;
  73.                } while(var6 < var0.length() && !dontNeedEncoding.get(var7 = var0.charAt(var6)));
  74.  
  75.                var5.flush();
  76.                String var14 = new String(var5.toCharArray());
  77.                byte[] var9 = var14.getBytes(var4);
  78.  
  79.                for(int var10 = 0; var10 < var9.length; ++var10) {
  80.                   var3.append('%');
  81.                   char var11 = Character.forDigit(var9[var10] >> 4 & 15, 16);
  82.                   if (Character.isLetter(var11)) {
  83.                      var11 = (char)(var11 - 32);
  84.                   }
  85.  
  86.                   var3.append(var11);
  87.                   var11 = Character.forDigit(var9[var10] & 15, 16);
  88.                   if (Character.isLetter(var11)) {
  89.                      var11 = (char)(var11 - 32);
  90.                   }
  91.  
  92.                   var3.append(var11);
  93.                }
  94.  
  95.                var5.reset();
  96.                var2 = true;
  97.             }
  98.          }
  99.  
  100.          return var2 ? var3.toString() : var0;
  101.       }
  102.    }
  103.  
  104.    static {
  105.       for(int var0 = 97; var0 <= 122; ++var0) {
  106.          dontNeedEncoding.set(var0);
  107.       }
  108.  
  109.       for(int var1 = 65; var1 <= 90; ++var1) {
  110.          dontNeedEncoding.set(var1);
  111.       }
  112.  
  113.       for(int var2 = 48; var2 <= 57; ++var2) {
  114.          dontNeedEncoding.set(var2);
  115.       }
  116.  
  117.       dontNeedEncoding.set(32);
  118.       dontNeedEncoding.set(45);
  119.       dontNeedEncoding.set(95);
  120.       dontNeedEncoding.set(46);
  121.       dontNeedEncoding.set(42);
  122.       dfltEncName = (String)AccessController.doPrivileged(new GetPropertyAction("file.encoding"));
  123.    }
  124. }
  125.